/**
 * 类型定义统一导出文件
 *
 * 此文件负责导出所有类型定义，方便其他模块统一引用
 * @fileoverview 应用程序类型定义入口文件
 */

// 用户相关类型
export * from './user';

/**
 * API 响应的通用类型
 *
 * 使用判别联合类型设计，确保类型安全
 * - 成功响应：{ success: true, data: T }
 * - 错误响应：{ success: false, error: string }
 *
 * @template T - 响应数据的类型
 *
 * @example
 * ```typescript
 * // 成功响应
 * const successResponse: ApiResponse<User> = {
 *   success: true,
 *   data: { id: '1', name: 'John', email: 'john@example.com' }
 * };
 *
 * // 错误响应
 * const errorResponse: ApiResponse<User> = {
 *   success: false,
 *   error: '用户未找到'
 * };
 * ```
 */
export type ApiResponse<T = unknown> =
  | { success: true; data: T }
  | { success: false; error: string };

/**
 * API 错误类
 *
 * 继承自Error，包含错误码信息
 * 中间件会自动检测此类型的错误并根据错误码设置相应的HTTP状态码
 */
export class ApiError extends Error {
  public readonly code: number;

  constructor(code: number, message: string) {
    super(message);
    this.code = code;
    this.name = 'ApiError';
  }
}
